#include <stdio.h>

/**
 * 给定100个人站成一圈，从第1个人开始依次报数。
 * 每数到3的人将会被淘汰，然后继续从下一个人开始报数。
 * 这个过程会一直持续，直到所有的人都被淘汰。
 * 请编写一个C语言程序来模拟这个过程，并且输出每一个被淘汰人的编号。
 * 要求：输出每一个被淘汰人的编号，每淘汰一个人输出一行，格式为："%d out \n"(每输出一次换行)
*/

#define ALL_NUM 100
#define COUNT_NUM	3
#define OUT_NUM		3

/* people id array such as (1,2,3,4,5,6) */
int people[ALL_NUM];

int main(void)
{
	int left = ALL_NUM;	/* 剩余人数 */
	int pos = 0;	/* 当前报数位置 */
	int step;	/* 当前报数 */
  memset(people, 0, ALL_NUM*sizeof(int));

	//TODO
	while(left > 0) {
    step = 0;
    while(1) {
      if(people[pos] == 0) {
         /*printf("%d ", pos+1);*/
         step++; 
         if (step >= 2) {
           pos = (++pos)%ALL_NUM;
           while(people[pos] != 0)
              pos = (++pos)%ALL_NUM;
           break;
         }
      }
      pos = (++pos)%ALL_NUM;
    }

    people[pos] = 1;
    printf("%d out \n", pos+1);
    left--; 
  }
	

	return 0;
}
